import App from '../App.vue'
module.exports = (params) =>{
	// 接口公共地址
	let url = App.hostname + params.url;
	let method = params.method;
	let header = params.header || {};
	let data = params.data || {};
	
	//获取缓存的token
	const token = uni.getStorageSync('token'); 
	
	//请求方式 get||post
	if(method){
		method = method.toUpperCase();//小写转大写
	}
	
	// GET 请求参数处理：将参数拼接到 URL 后面
	if (method === 'GET' && data && Object.keys(data).length > 0) {
		const queryString = Object.keys(data)
			.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`)
			.join('&');
		
		// 检查 URL 是否已经包含查询参数
		if (url.includes('?')) {
			url += '&' + queryString;
		} else {
			url += '?' + queryString;
		}
		
		// GET 请求不需要在 body 中传递 data
		data = {};
	}
	
	//发起请求 加载动画
	if(!params.hideLoading){//hideLoading隐藏 loading 提示框
		// uni.showLoading({
		// 	title:'加载中...'
		// })
	}
	//发起网络请求
	uni.request({
		url:url,
		method:method || 'GET',
		header:{"Authorization":'Bearer '+ token},//必要时设置"content-type":"application/x-www-form-urlencoded",
		data:data,
		sslVerify:false,//是否验证ssl证书
		success: (res) => {//请求成功
			if(res.statusCode && res.statusCode != 200){//api报错
				setTimeout(function() {
					uni.showToast({
						title:res.msg,
						icon:'none',
					})
				}, 100);
				return;
			}
		
			if(res.data.code == 401){
				uni.showToast({
					title: '登录已失效，请重新登录',
					icon:'none',
				})
				uni.removeStorageSync('token');
				uni.removeStorageSync('openid');
				uni.removeStorageSync('userInfo');//清理本地数据缓存
				
				  // 判断当前页面栈里是否已有登录页
				  const pages = getCurrentPages();
				  const hasLogin = pages.some(p => p.route === 'subPackages/mine/login/login');
				  if (!hasLogin) {
				    uni.navigateTo({
				    	url: '/subPackages/mine/login/login'
				    })
				  }
			}
			if(res.data.code == 500){
				// uni.showToast({
				// 	title: res.data.msg,
				// 	icon:'none',
				// })
				typeof params.fail == 'function' && params.fail(res.data);
			}
			typeof params.success == 'function' && params.success(res.data);
		},
		
		//请求失败
		fail: (err) => {
			
			uni.showToast({
				title:err.msg,
				icon:'none'
			})
			typeof params.fail == 'function' && params.fail(err.data);
		},
		
		//请求回调
		complete: (e) => {
			console.log('请求完成');
			// ;
	
			typeof params.fail == 'function' && params.complete(e.data);
			return;
		}
	})
}